--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/MicronParser.test.js bd2875eb0d7d3bce2389ff0e1e7397a5bede9c6e (bd2875eb) Text, 29.88 KB
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3vi Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3MicronParser Tff7b72from Ta5d6ff"@/js/MicronParser"Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"MicronParser.js"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3parserTb4b4b4;
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3parser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4; T8b949e// darkTheme = true, enableForceMonospace = false
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"PARTIAL_LINE_REGEX"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"matches partial without refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Ta5d6ff"`{f64a846313b874ee4a357040807f8c77:/page/partial.mu}"
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"/page/partial.mu"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeUndefinedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"matches partial with refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Ta5d6ff"`{f64a846313b874ee4a357040807f8c77:/page/ref.mu`30}"
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3mTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"30"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not match without leading backtick"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Ta5d6ff"{f64a846313b874ee4a357040807f8c77:/page/x.mu}"Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not match short hash"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Ta5d6ff"`{f64a846313b874ee4a35704:/page/x.mu}"Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatNomadnetworkUrl"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats nomadnetwork URL correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3formatNomadnetworkUrlTb4b4b4(Ta5d6ff"example.com"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nomadnetwork://example.com"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"isWideMonospaceCell"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"detects Han, kana, Hangul syllables"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"中"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"あ"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"ア"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"한"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"detects CJK punctuation and fullwidth ASCII"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"\u3000"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"\uff01"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"treats Latin as narrow"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"A"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Ta5d6ff"9"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"forceMonospace wide cells"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"uses Mu-mnt-group for Latin-only words and Mu-mnt-full per grapheme for CJK"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3monoParser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3monoParserTb4b4b4.Te6edf3splitAtSpacesTb4b4b4(Ta5d6ff"Hi \u4e2d\u6587"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Mu-mnt-group"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt'>H</span>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt-full'>\u4e2d</span>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"class='Mu-mnt-full'>\u6587</span>"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"uses Mu-mnt-group for Cyrillic without per-character Mu-mnt spans"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3monoParser Tff7b72= Tff7b72new Te6edf3MicronParserTb4b4b4(Tff7b72trueTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3monoParserTb4b4b4.Te6edf3forceMonospaceTb4b4b4(Ta5d6ff"\u041f\u0440\u0438\u0432\u0435\u0442"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Mu-mnt-group"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"\u041f\u0440\u0438\u0432\u0435\u0442"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/class='Mu-mnt'>/Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"convertMicronToHtml"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"converts simple text to HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"Hello World"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Hello World"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<div"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"converts headings correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"> Heading 1\n>> Heading 2"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading 1"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading 2"Tb4b4b4)Tb4b4b4;
T8b949e// Check for styles applied to headings (in dark theme)
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: rgb(187, 187, 187)"Tb4b4b4)Tb4b4b4; T8b949e// #bbb
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"background-color: rgb(153, 153, 153)"Tb4b4b4)Tb4b4b4; T8b949e// #999
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"converts horizontal dividers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"-"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<hr"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles bold formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!Bold Text`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-weight: bold"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Bold Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles italic formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`*Italic Text`*"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-style: italic"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Italic Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles underline formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`_Underlined Text`_"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"text-decoration: underline"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Underlined Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles combined formatting"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!`_Bold Underlined Text`_`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-weight: bold"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"text-decoration: underline"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Bold Underlined Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"foreground color"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 3-char F format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`FabcRed Text`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"rgb(170, 187, 204)"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Red Text"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"background color"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 3-char B format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`BfffYellow BG`"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"rgb(255, 255, 255)"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Yellow BG"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles literal mode"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\n`*Not Italic`*\n`="Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"font-style: italic"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"`*Not Italic`*"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles links correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[Label`example.com]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<a"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'href="nomadnetwork://example.com"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Label"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles input fields"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<24|field_name`Initial Value>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<input"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'name="field_name"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'value="Initial Value"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles checkboxes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<?|checkbox_name|val|*`Checkbox Label>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'type="checkbox"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'name="checkbox_name"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'value="val"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Checkbox Label"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"partials"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"emits placeholder for partial line without refresh"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/partial_1.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'class="mu-partial"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-dest="' Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="' Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"data-refresh"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"emits placeholder for partial line with refresh seconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"f64a846313b874ee4a357040807f8c77"Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/refreshing_partial.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"`10}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'class="mu-partial"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-dest="' Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="' Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff'"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-refresh="10"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"injects partialContents when provided"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"a"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Ta5d6ff"/page/partial.mu"Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":" Tff7b72+ Te6edf3path Tff7b72+ Ta5d6ff"}"Tb4b4b4;
Tff7b72const Te6edf3injected Tff7b72= Ta5d6ff"<span>Injected partial content</span>"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4, Tb4b4b4{ Ta5d6ff"partial-0"Tff7b72: Te6edf3injected Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3injectedTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Loading..."Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"assigns unique partial ids for multiple partials"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"b"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/a.mu}\n`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/b.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-0"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-partial-id="partial-1"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="/page/a.mu"'Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'data-path="/page/b.mu"'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not interpret partial syntax inside literal block"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Ta5d6ff"c"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff32Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\n`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}\n`="Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"`{" Tff7b72+ Te6edf3dest Tff7b72+ Ta5d6ff":/page/partial.mu}"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not treat similar-looking line as partial without backtick"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"{f64a846313b874ee4a357040807f8c77:/page/partial.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"colorToCss"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"expands 3-digit hex"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"abc"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#abc"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"returns 6-digit hex"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"abcdef"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#abcdef"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles grayscale format"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"g50"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"#7f7f7f"Tb4b4b4)Tb4b4b4; T8b949e// 50 * 2.55 = 127.5 -> 7f
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"returns null for unknown formats"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3parserTb4b4b4.Te6edf3colorToCssTb4b4b4(Ta5d6ff"invalid"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"risky: XSS and injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"output contains no raw script tag for script-like markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"<script>alert(1)</script> hello"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"output contains no javascript: in href for link-like markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`javascript:alert(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*javascript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"output contains no data: html in href"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[x`data:text/html,<script>alert(1)</script>]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*data\s*:\s*text\/html/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not produce executable event handler attributes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<span onclick="alert(1)">x</span>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<[^>]*\bonclick\s*=\s*["']?\s*alert/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"risky: stability and edge input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"does not throw on null or undefined markup"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles very long input without hanging"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Tff7b72long Tff7b72= Ta5d6ff"> "Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff5000Tb4b4b4) Tff7b72+ Ta5d6ff"x"Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Tff7b72longTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles repeated backticks (ReDoS-prone pattern) quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff3000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff200Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles control chars and null byte"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"hello\x00world\x07\n\t"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles unicode and RTL override"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\u202eRTL `!bold`! text \ufffd"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: deeply nested tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 500 levels of nested bold without stack overflow"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3open Tff7b72= Ta5d6ff"`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3close Tff7b72= Ta5d6ff"`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Te6edf3open Tff7b72+ Ta5d6ff"deep" Tff7b72+ Te6edf3closeTb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"deep"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles 500 levels of mixed nesting (bold+italic+underline)"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3tags Tff7b72= Tb4b4b4[Ta5d6ff"`!"Tb4b4b4, Ta5d6ff"`*"Tb4b4b4, Ta5d6ff"`_"Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3markup Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< T79c0ff500Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Te6edf3markup Tff7b72+= Te6edf3tagsTb4b4b4[Te6edf3i Tff7b72% T79c0ff3Tb4b4b4]Tb4b4b4;
Te6edf3markup Tff7b72+= Ta5d6ff"payload"Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff499Tb4b4b4; Te6edf3i Tff7b72>= T79c0ff0Tb4b4b4; Te6edf3iTff7b72--Tb4b4b4) Te6edf3markup Tff7b72+= Te6edf3tagsTb4b4b4[Te6edf3i Tff7b72% T79c0ff3Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"payload"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles deeply nested headings"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tb4b4b4{ Te6edf3lengthTff7b72: T79c0ff200 Tb4b4b4}Tb4b4b4, Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3iTb4b4b4) Tb4b4b4=> Ta5d6ff">"Tb4b4b4.Te6edf3repeatTb4b4b4(Te6edf3i Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72+ Ta5d6ff" H"Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: unclosed and mismatched tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed bold tag"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!unclosed bold without end"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed italic tag"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`*unclosed italic"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles mismatched open/close order"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!`*bold-italic`!`*"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed link"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[link text without closing"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*javascript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<24|field_name`value without closing"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles unclosed literal mode"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`=\nsome literal text that never closes"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: malformed UTF-8 and encoding attacks"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles UTF-8 overlong encoding sequences"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"test\xC0\xAFpath\xE0\x80\xAFmore"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles surrogate halves"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"text\uD800alone\uDC00orphan"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles BOM characters"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\uFEFF> Heading with BOM"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles zero-width joiner/non-joiner"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!\u200Bbold\u200Dtext`!"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles full-width characters in tag positions"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\uFF40\uFF01fullwidth backtick-bang\uFF40\uFF01"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: null bytes and control characters"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles null bytes between tag markers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`\x00!bold\x00`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles line of only null bytes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\x00"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff100Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles ASCII control characters 0x01-0x1F"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3markup Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< T79c0ff32Tb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Te6edf3markup Tff7b72+= Tffa657StringTb4b4b4.Te6edf3fromCharCodeTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles escape sequences in links"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[label`\x1B[31mred\x1B[0m]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles DEL character (0x7F)"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"hello\x7Fworld"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: ReDoS patterns"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles alternating backtick-bracket pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`["Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4) Tff7b72+ Ta5d6ff"x" Tff7b72+ Ta5d6ff"]"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles alternating backtick-angle pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`<"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4) Tff7b72+ Ta5d6ff"y" Tff7b72+ Ta5d6ff">"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles pathological color code pattern quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`Fabc"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles massive number of newlines quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\n"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff10000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff1500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles rapid format toggle (open/close/open/close) quickly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!x`!"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff2000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff1500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: XSS bypass attempts"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"blocks SVG onload XSS"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<svg onload="alert(1)">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3svgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"svg"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3svg Tff7b72of Te6edf3svgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3svgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onload"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks img onerror XSS"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<img src=x onerror="alert(1)">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3imgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"img"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3img Tff7b72of Te6edf3imgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onerror"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks iframe injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<iframe src="https://evil.com"></iframe>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<iframe[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks style-based data exfiltration"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<style>body{background:url("https://evil.com/steal")}</style>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<style[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks javascript: in link with encoding"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`java\tscript:alert(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*java\s*script:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks vbscript: protocol"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`[click`vbscript:MsgBox(1)]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/\bhref\s*=\s*["']?\s*vbscript:/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks meta refresh injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<meta http-equiv="refresh" content="0;url=https://evil.com">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<meta[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks object/embed tags"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<object data="evil.swf"></object><embed src="evil.swf">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<object[\s>]/iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<embed[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks form action injection"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<form action="https://evil.com"><input type="submit"></form>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<form[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"blocks base tag hijacking"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'<base href="https://evil.com/">'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<base[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: injection through micron features"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"link URL with attribute injection is entity-encoded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`[click`" onclick="alert(1)" data-x="]'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3anchors Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3a Tff7b72of Te6edf3anchorsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3aTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onclick"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"input field name cannot inject HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`<24|"><script>alert(1)</script>`val>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"checkbox value with attribute injection is entity-encoded"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`<?|name|"><img src=x onerror=alert(1)>|`label>'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3imgs Tff7b72= Te6edf3divTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff"img"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3img Tff7b72of Te6edf3imgsTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"onerror"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"color code cannot inject styles or HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff'`F"><script>alert(1)</script>text'Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"partial hash cannot inject HTML"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff'a"><script>alert(1)</script>'Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`{" Tff7b72+ Te6edf3hash Tff7b72+ Ta5d6ff":/page/test.mu}"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: large and extreme payloads"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles 100KB of plain text"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"A"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff100Te6edf3_000Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff2000Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles 10K lines of formatted text"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3lines Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Tb4b4b4{ Te6edf3lengthTff7b72: T79c0ff10Te6edf3_000 Tb4b4b4}Tb4b4b4, Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3iTb4b4b4) Tb4b4b4=> Ta5d6ff`Ta5d6ff\`Ta5d6ff!line Tffd700${Te6edf3iTffd700}Ta5d6ff\`Ta5d6ff!Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3markup Tff7b72= Te6edf3linesTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Te6edf3startTb4b4b4)Tb4b4b4.Te6edf3toBeLessThanTb4b4b4(T79c0ff15000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff15000Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles single line of 50KB"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!" Tff7b72+ Ta5d6ff"X"Tb4b4b4.Te6edf3repeatTb4b4b4(T79c0ff50Te6edf3_000Tb4b4b4) Tff7b72+ Ta5d6ff"`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles empty string"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles only whitespace"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff" \t\t\n\n "Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"adversarial: polyglot and mixed content"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"handles HTML/micron polyglot"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"> `!<b>Heading</b>`!\n<script>alert(1)</script>\n`[link`http://safe.com]"Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/<script[\s>]/iTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"Heading"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles markdown-like input"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"# Not a heading\n**not bold**\n[not a link](http://evil.com)"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles ANSI escape codes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"\x1B[31mred text\x1B[0m normal"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles mixed valid/invalid UTF-8 with micron"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3markup Tff7b72= Ta5d6ff"`!\uFFFD\uFFFE\uFFFF bold\uD83D\uDE00`!"Tb4b4b4;
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"resilience: parse failures"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"renders other lines when parseLine throws for one line"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3spy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3parserTb4b4b4, Ta5d6ff"parseLine"Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tff7b72function Tb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72=== Ta5d6ff"BAD"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"forced parse failure"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3MicronParserTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3parseLineTb4b4b4.Te6edf3callTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3html Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToHtmlTb4b4b4(Ta5d6ff"good line\nBAD\nanother"Tb4b4b4)Tb4b4b4;
Te6edf3spyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"good line"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"mu-line-parse-fallback"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"BAD"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"another"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"convertMicronToFragment returns a fragment when parseLine throws"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3spy Tff7b72= Te6edf3viTb4b4b4.Te6edf3spyOnTb4b4b4(Te6edf3parserTb4b4b4, Ta5d6ff"parseLine"Tb4b4b4)Tb4b4b4.Te6edf3mockImplementationTb4b4b4(Tff7b72function Tb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72=== Ta5d6ff"BAD"Tb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"forced"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3MicronParserTb4b4b4.Te6edf3prototypeTb4b4b4.Te6edf3parseLineTb4b4b4.Te6edf3callTb4b4b4(Tff7b72thisTb4b4b4, Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3frag Tff7b72= Te6edf3parserTb4b4b4.Te6edf3convertMicronToFragmentTb4b4b4(Ta5d6ff"ok\nBAD\nok2"Tb4b4b4)Tb4b4b4;
Te6edf3spyTb4b4b4.Te6edf3mockRestoreTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3fragTb4b4b4.Te6edf3childNodesTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────